/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package etl;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

/**
 *
 * @author BENAMMAR Riyadh
 */
/**
 * cette classe a pour objectif d'extraire les sources des données qui ont une relation
 * avec l'information recherchée à partir du fichier catalogue qui doit être au format xml
 * @author BENAMMAR Riyadh
 */
public class Extract {
    //valeurs par defaut
    private String informationRecherchee="hotel";
    private String cataloguePath="src\\Catalogue.xml";
    
    /**
     * constructeur vide
     */
    public Extract(){
        
    }
    
    /**
     * constructeur avec initialisation de l'information recherchée dans le catalogue par defaut
     * @param information 
     */
    public Extract(String information){
        this.informationRecherchee=information;
        new Extract();
    }
    /**
     * constructeur avec initialisation de l'information recherchée dans le catalogue spécifié
     * @param information
     * @param catalogue 
     */
    public Extract(String information, String catalogue){
        this.informationRecherchee=information;
        this.cataloguePath=catalogue;
        new Extract();
    }

    public void setInformationRecherchee(String informationRecherchee) {
        this.informationRecherchee = informationRecherchee;
    }
    
    /**
     * faire l'extration de toutes les ressources possibles pour pouvoir chercher les données en
     * relations avec l'information recherchée.
     * @return sous ensemble de ressources 
     */
    public ArrayList<Element> appliquer(){
        ArrayList<Element> resultat=new ArrayList<Element>();
        Document document = null;
            Element racine;
            SAXBuilder sxb = new SAXBuilder();
        try {
            //On a crée un nouveau document JDOM avec en argument le fichier XML
            //Le parsing est terminé
            document = sxb.build(new File(cataloguePath));
            
        } catch (JDOMException ex) {
            JOptionPane.showMessageDialog(null, "impossible de parser le catalogue","erreur",JOptionPane.ERROR_MESSAGE);
            //System.err.println("impossible de parser le catalogue");
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "fichier catalogue spécifié est introuvale","erreur",JOptionPane.ERROR_MESSAGE);
            //System.err.println("fichier introvable");
        }
            //On initialise un nouvel élément racine avec l'élément racine du document.
            racine = document.getRootElement();
            List<Element> children=racine.getChildren();
            Iterator iter=children.iterator();
            while(iter.hasNext()){
                Element child=(Element) iter.next();
                //System.out.println("element tester: "+child.getAttributeValue("nom")+" info: "+informationRecherchee);
                if(child.getAttributeValue("nom").equalsIgnoreCase(informationRecherchee)){                    
                    resultat.add(child);
                }
            }
            return resultat;
    }
    
    
}
